#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QCloseEvent>
#include <QDialog>
#include <QLabel>
#include <QLineEdit>
#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow {
    Q_OBJECT

public:
    explicit MainWindow(QWidget* parent = 0);
    ~MainWindow();

    void newFile();                         // 新建操作
    bool maybeSave();                       // 判断是否需要保存
    bool save();                            // 保存操作
    bool saveAs();                          // 另存为操作
    bool saveFile(const QString& fileName); // 保存文件
    bool loadFile(const QString& fileName); // 加载文件

protected:
    void closeEvent(QCloseEvent* event); // 关闭事件

private slots:
    void on_actionNew_triggered();
    void on_actionSave_triggered();
    void on_actionSaveAs_triggered();
    void on_actionOpen_triggered();
    void on_actionClose_triggered();
    void on_actionExit_triggered();
    void on_actionUndo_triggered();
    void on_actionCut_triggered();
    void on_actionCopy_triggered();
    void on_actionPaste_triggered();
    void on_actionFind_triggered();

    void showFindText();

private:
    Ui::MainWindow* ui;

    // 为真表示文件没有保存过, 为假表示文件已经被保存过了
    bool       isUntitled = true;
    QString    curFile    = tr("未命名.txt"); // 保存当前文件的路径
    QDialog*   findDialog = new QDialog(this);
    QLineEdit* findLineEdit = new QLineEdit(findDialog);
    QLabel*    statusLabel  = new QLabel(this);
    QLabel*    permanent    = new QLabel(this);
};

#endif // MAINWINDOW_H
